package leetcode100;

// TODO 动态规划 | 状态转移方程 [经典] 【-】 最小路径和
// TODO https://leetcode.cn/problems/minimum-path-sum/solution/si-lu-qing-xi-dai-ma-jian-dan-by-damon-s-38ug/

public class lc100_0064 {

    public int minPathSum(int[][] grid) {
        int m = grid.length;
        int n = grid[0].length;
        // 初始状态
        for (int i=1; i<n; i++)
            grid[0][i] = grid[0][i] + grid[0][i-1];
        for (int i=1; i<m; i++)
            grid[i][0] = grid[i][0] + grid[i-1][0];

        // 状态转移方程
        for (int i=1; i<m; i++) {
            for (int j=1; j<n; j++) {
                grid[i][j] = Math.min(grid[i][j-1], grid[i-1][j]) + grid[i][j];
            }
        }
        return grid[m-1][n-1];
    }
}
